package br.com.vendor_engine.repositorio;

import br.com.vendor_engine.entidades.Produto;
import br.com.vendor_engine.interfaces.InterfaceProduto;
import br.com.vendor_engine.xmlutil.NewHibernateUtil;
import java.util.List;
import org.hibernate.Session;

public class RepositorioProduto implements InterfaceProduto {

    private Session s = NewHibernateUtil.getSessionFactory().getCurrentSession();
    private Produto pt1 = new Produto();

    @Override
    public void salvarProduto(byte[] imagemProduto, String marcaProduto, String modeloProduto, 
    String descricaoProduto) {

        pt1.setIdProduto(0);
        pt1.setImagemProduto(imagemProduto);
        pt1.setMarcaProduto(marcaProduto);
        pt1.setModeloProduto(modeloProduto);
        pt1.setDescricaoProduto(descricaoProduto);

        s.beginTransaction();
        s.save(pt1);
        if (s.getTransaction().isActive()) {
            s.beginTransaction().commit();
            if (s.isOpen()) {
                s.flush();
            }
        }
        if (s.isOpen()) {
            s.close();
            System.out.println("Fechada");
        }
    }

    @Override
    public Produto getProduto() {
        return pt1;
    }

    @Override
    public void alterarProduto(int idProduto, byte[] imagemProduto, String marcaProduto, 
    String modeloProduto, String descricaoProduto) {
        
        pt1.setIdProduto(idProduto);
        pt1.setImagemProduto(imagemProduto);
        pt1.setMarcaProduto(marcaProduto);
        pt1.setModeloProduto(modeloProduto);
        pt1.setDescricaoProduto(descricaoProduto);

        s.beginTransaction();
        s.save(pt1);
        if (s.getTransaction().isActive()) {
            s.beginTransaction().commit();
            if (s.isOpen()) {
                s.flush();
            }
        }
        if (s.isOpen()) {
            s.close();
            System.out.println("Fechada");
        }
        
    }

    @Override
    public List<Produto> pegarTodosProdutos() {
        
        s.beginTransaction();
        List<Produto> list = (List<Produto>) s.createQuery("from Produto").list();
        return list;        
    }
}
